import {MessageBox} from 'element-ui'
//首字母大写
export function changeStr(str){
    return str.charAt(0).toUpperCase()+str.slice(1);
}
//返回图片路径
export function getPngImgSrc(imgName){
    return require(`@/assets/img/${imgName}.png`); 
}
export  function getImgSrc(imgName) {
   return require("@/assets/img/" + imgName + ".png");
}
export  function getJpgSrc(imgName) {
   return require("@/assets/img/" + imgName + ".jpg");
}
//element-ui  MesBox Fn
/**
 * 
 * @param {fn} sucFn 
 * @param {fn} errFn 
 * @param {string} title 
 * @param {string} type 
 * @param {object} option 
 */
export function myMesBoxPop(sucFn,errFn,title='此操作将永久删除该文件,是否继续?',type='提示',option={
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    distinguishCancelAndClose: true,
    type: 'warning'
  }){
    MessageBox.confirm(title,type,option).then(()=>{
        if(sucFn){
            console.log('成功');
            sucFn()
        }
    }).catch(()=>{
        if(errFn){
            console.log('失败');
            errFn()
        }
    })
}
//element-ui  tree 获取树状当前节点
/**
 * 
 * @param {*} treeName //this.$refs.(treeName)
 * @param {*} type  //'string'/'array'
 */
export function getCheckedNodes(treeName,type) {
    let rad=''
    let ridsa = treeName.getCheckedKeys().join(',')// 获取当前的选中的数据[数组] -id, 把数组转换成字符串
    let ridsb = treeName.getCheckedNodes()// 获取当前的选中的数据{对象}
    ridsb.forEach(ids=>{//获取选中的所有的父级id
      rad+=','+ids.pid
    })
    rad=rad.substr(1) // 删除字符串前面的','
    let rids=rad+','+ridsa
    let arr=rids.split(',')//  把字符串转换成数组
    arr=[...new Set(arr)]; // 数组去重
    if(type==='string'){
        rids=arr.join(',')// 把数组转换成字符串
        return rids
    }
    if(type==='array'){
        const newArr=[];
        arr.forEach((item)=>{
            newArr.push(Number(item));
        })
        return newArr
    }
  
}

//根据时间戳返回日期格式
// /**
//  * 
//  * @param {*} timestamp 
//  * @param {*} formats  
//  * // formats格式包括
//     // 1. Y-m-d
//     // 2. Y-m-d H:i:s
//     // 3. Y年m月d日
//     // 4. Y年m月d日 H时i分
//  */
// export function dateFormat(timestamp, formats){
//     formats = formats || 'Y-m-d';
//     var zero = function (value) {
//         if (value < 10) {
//             return '0' + value;
//         }
//         return value;
//     };
//     var myDate = timestamp? new Date(timestamp): new Date();
//     var year = myDate.getFullYear();
//     var month = zero(myDate.getMonth() + 1);
//     var day = zero(myDate.getDate());
//     var hour = zero(myDate.getHours());
//     var minite = zero(myDate.getMinutes());
//     var second = zero(myDate.getSeconds());
//     return formats.replace(/Y|m|d|H|i|s/ig, function (matches) {
//         return ({
//             Y: year,
//             m: month,
//             d: day,
//             H: hour,
//             i: minite,
//             s: second
//         })[matches];
//     });
// };
export function getTime(data, type){  //data时间戳，type返回的类型默认Y,可传参Y和H
    let time = new Date(data);    
    let Y = time.getFullYear();
    let Mon = time.getMonth() + 1;
    let Day = time.getDate();
    let H = time.getHours();
    let Min = time.getMinutes();
    let S = time.getSeconds();
    //自定义选择想要返回的类型
    if(type === "Y") {   //返回年月日2020-10-10
      return `${Y}-${Mon}-${Day}`
    } else if(type === "H") {  //返回时分秒20：10：10
      return `${H}:${Min}:${S}`
    } else {  //返回年月日时分秒2020-10-10 10:26:38
      return `${Y}-${Mon}-${Day} ${H}:${Min}:${S}`
    }
  }
  
//去抖动
/**
 * @param {Function} func
 * @param {number} wait
 * @param {boolean} immediate
 * @return {*}
 */
export function debounce(func, wait, immediate) {
    let timeout, args, context, timestamp, result
  
    const later = function() {
      // 据上一次触发时间间隔
      const last = +new Date() - timestamp
  
      // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
      if (last < wait && last > 0) {
        timeout = setTimeout(later, wait - last)
      } else {
        timeout = null
        // 如果设定为immediate===true，因为开始边界已经调用过了此处无需调用
        if (!immediate) {
          result = func.apply(context, args)
          if (!timeout) context = args = null
        }
      }
    }
  
    return function(...args) {
      context = this
      timestamp = +new Date()
      const callNow = immediate && !timeout
      // 如果延时不存在，重新设定延时
      if (!timeout) timeout = setTimeout(later, wait)
      if (callNow) {
        result = func.apply(context, args)
        context = args = null
      }
  
      return result
    }
  }




  